其他
一行代码在生存曲线中添加子图
今天推荐一个不错的绘制生存曲线的R包——ggsurvfit包,这个包最大的优点就是基于ggplot2语法来绘制生存曲线,相比survminer包的ggsurvplot()函数,ggsurvfit包的可定制化程度更高,而且绘制起来更加简单,强力推荐。
特别是组合不同的生存曲线图形,极其方便。
今天主要学习下这个图形,怎么在主图上面添加一个子图。
下面来学习下。
1. 加载数据
使用survival包的lung数据集,数据集包括了NCCTG晚期肺癌患者的生存率。
运行以下代码加载数据:
library(survival) # 加载包
head(lung) # 预览数据
2. 拟合曲线
使用survfit2()函数来拟合曲线。
library(ggsurvfit)
fit <- survfit2(Surv(time, status) ~ sex, data = lung)
fit # 可输出部分信息
3. 简单生存曲线
将拟合模型转化为整洁数据框,然后提取其中的数据使用ggplot2包进行绘图。
ggsurvfit包将绘图代码打包成了一个函数——ggsurvfit()函数,使用ggsurvfit()函数可以轻松绘制生存曲线。
fit %>%
ggsurvfit()
4. 生存曲线排版
可以在主图上面添加子图。
p1 <- survfit(Surv(time, status) ~ sex, data = lung) %>%
ggsurvfit(linewidth = 0.8) +
add_confidence_interval() +
theme_bw(base_size = 12) +
theme(legend.position=c(0.7,0.8)) +
ggsci::scale_fill_nejm()
p4 <- survfit(Surv(time, status) ~ sex, data = lung) %>%
ggsurvfit(linewidth = 0.8, type = "cumhaz") +
add_confidence_interval() +
theme_bw(base_size = 10) +
theme(legend.position='none') +
ggsci::scale_fill_nejm()
绘制很简单,一行代码即可搞定。
library(patchwork)
p1 +
inset_element(p4,
left = 0.5, bottom = 0.5, right = 0.99, top = 0.99)
参考资料
1.ggsurvfit包帮助文件。
《完》
关注下方公众号,分享更多更好玩的R语言知识。
点个在看,SCI马上发表。